package com.baidu.model.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.io.Serializable;


@Data // 包含了空参,getter/setter以及equals和hashcode以及toString
@AllArgsConstructor // 添加了全参构造
@NoArgsConstructor // 手动添加了一个空参构造,前提是使用了@AllArgsConstructor
@EqualsAndHashCode(of = "id") // id一样的对象,equals比较返回true

@Entity // 实体类,肯定是有表和它对应的.
@Table(name = "t_user") // 该实体类对应的表,默认的表名就是实体名user
public class User implements Serializable {
    //对象的标识

    //必须要指定某个属性对应表中的主键列,因为表是必须要有主键的
    @Id // 该属性就是作为表中的primary key
    @GeneratedValue // 指定主键的生成策略,看底层的数据库的,如果是mysql,auto_increment自增长
    private Integer id;

    //用户名
    //@Column(name = "uname") // 普通列默认也是和属性名是保持一致的,可以通过name来重新定义列的名称
    private String username;

    //利用邮箱进行登录使用
    private String email;

    private int power;//权限, 0 超级管理员  1 普通登录用户

    //手动添加空参构造,全参构造,getter/setter,toString
//    public User(){
//        System.out.println("User的空参被调用了...");
//    }
//
//    public User(Integer id,String username){
//        this.id = id;
//        this.username = username;
//    }
//
//    public Integer getId() {
//        return id;
//    }
//
//    public void setId(Integer id) {
//        this.id = id;
//    }

//        public static void main(String[] args) {
//        //如果一个实体类中没有手动提供任何一个构造
//        //那么系统会默认分配一个空参构造
//
//        //如果一个实体类中存在任何一个带参构造
//        //那么系统就不会再分配一个空参构造
//        //User user = new User(1,"admin");//调用空参构造...
//
//        User user1 = new User(1,"admin","xxx@qq.com",0);
//        User user2 = new User(2,"tom","yyy@qq.com",1);
//        System.out.println(user1.equals(user2));
//    }


}
